#include "eigen/iterator_test.h"

#include <Eigen/Dense>
#include "log.h"
#include "eigen/iterator.h"

namespace  ldl_eigen
{

void IteratorTest::test()
{
    // 示例数据（4 行 10 列）
    const int64_t row = 10;
    const int64_t col = 10;
    Eigen::MatrixXf data(row, col);
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
            data(i, j) = i * col + j; // 按行填充 0,1,2,...,39
        }
    }

    // 创建迭代器
    Iterator iterator(row);

    // 获取批次数据（批次大小为 3）
    Eigen::MatrixXf batch1 = iterator.get_rand_batch(data, 3);
    LogInfo() << "Batch 1: " << batch1;

    Eigen::MatrixXf batch2 = iterator.get_rand_batch(data, 4);
    LogInfo() << "Batch 2: " << batch2;

    Eigen::MatrixXf batch3 = iterator.get_rand_batch(data, 5);
    LogInfo() << "Batch 3: " << batch3;
}
}